public class Solution {
    public static int totalFruit(int[] fruits) {
        int n = fruits.length;
        int ret = 0;
        int max = 0;
        int cnt = 0;  //记录hash表中不同元素的个数
        for(int x:fruits)
            if(x > max)  max = x;
        int[] hash = new int[max + 1];
        for(int left = 0,right = 0;right < n;) {  //如果right是在这里++  那就是左闭右闭
            if(++hash[fruits[right++]] == 1) cnt++;  //如果right在这里++的话  那这个区间相当于左闭右开
            while(cnt > 2) {
                if(--hash[fruits[left]] == 0) cnt--;
                left++;
            }
            ret = Math.max(ret,right-left+1);
        }
        return ret-1;
    }

    public static void main(String[] args) {
        int[] arr = {1,2,3,2,2};
        totalFruit(arr);
    }

}
